package com.example.fndemo;

/**
 * 分数求和工具类
 * 提供多种求和方法，支持整数、浮点数及可变参数的求和运算
 */
public class ScoreSumTool {
    /**
     * 两个整数求和
     * @param a 第一个整数
     * @param b 第二个整数
     * @return 两个整数的和
     */
    public static int sum(int a, int b) {
        return a + b;
    }

    /**
     * 三个整数求和
     * @param a 第一个整数
     * @param b 第二个整数
     * @param c 第三个整数
     * @return 三个整数的和
     */
    public static int sum(int a, int b, int c) {
        return a + b + c;
    }

    /**
     * 两个浮点数求和
     * @param a 第一个浮点数
     * @param b 第二个浮点数
     * @return 两个浮点数的和
     */
    public static double sum(double a, double b) {
        return a + b;
    }

    /**
     * 可变参数浮点数求和
     * @param scores 浮点数数组，可传入任意数量的浮点数
     * @return 所有浮点数的和
     */
    public static double sum(double... scores) {  // 重点：可变参数语法
        double total = 0;
        // 遍历所有分数并累加
        for (double s : scores) {
            total += s;  // 调试断点位置
        }
        return total;
    }

    public static void main(String[] args) {
        // 测试函数重载与自动类型转换
        System.out.println("操作数: 85, 92 | 期望和: 177 | 实际和: " + ScoreSumTool.sum(85., 92));

        System.out.println("操作数: 78, 90, 88 | 期望和: 256 | 实际和: " + ScoreSumTool.sum(78, 90, 88));

        System.out.println("操作数: 91.5, 89.0 | 期望和: 180.5 | 实际和: " + ScoreSumTool.sum(91.5, 89.0));

        System.out.println("操作数: 80.5, 85.0, 92.5 | 期望和: 258.0 | 实际和: " + ScoreSumTool.sum(80.5, 85.0, 92.5));

        System.out.println("操作数: 88, 90.5 | 期望和: 178.5 | 实际和: " + ScoreSumTool.sum(88, 90.5));
    }
}
